package redSocialUjaenDAO;
import excepciones.*;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

/**
 *
 * @author Carmen Maria Morillo Arias
 *         David Contreras García
 */
public class gestorPersistencia {
    
    EntityManagerFactory emf;
    EntityManager em;
    
    static gestorPersistencia instancia = null;
    
    private gestorPersistencia() {
        emf = Persistence.createEntityManagerFactory("redSocialUjaen_PAPU");
        em = emf.createEntityManager();
    }
    
    public EntityManager getEntityManager() {
        return em;
    }
        
    public static void crearConexion() throws ErrorConexionBD {
        if (instancia == null) {
            instancia = new gestorPersistencia();
        }
    }
    
    public static gestorPersistencia instancia() {
        return instancia;
    }
    
    public static void desconectar() {
        if (instancia != null) {
            instancia.em.getTransaction().begin();
            instancia.em.createNativeQuery("shutdown").executeUpdate();
            instancia.em.getTransaction().commit();
            
            instancia.em.close();
            instancia.emf.close();
            instancia = null;
        }
    }
}
